package com.td.module.farmer.service.management;

import com.td.framework.common.pojo.PageResult;
import com.td.module.farmer.controller.admin.management.vo.*;
import com.td.module.farmer.dal.dataobject.management.ManagementDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 农户土地信息 Service 接口
 *
 * @author 王翔翔
 */
public interface ManagementService {
    /**
     * 创建农户土地信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createManagement(@Valid ManagementCreateReqVO createReqVO);

    /**
     * 更新农户土地信息
     *
     * @param updateReqVO 更新信息
     */
    void updateManagement(@Valid ManagementUpdateReqVO updateReqVO);

    /**
     * 删除农户土地信息
     *
     * @param id 编号
     */
    void deleteManagement(Long id);

    /**
     * 获得农户土地信息
     *
     * @param id 编号
     * @return 农户土地信息
     */
    ManagementRespVO getManagement(Long id);

    /**
     * 通过农户编码获得农户土地信息
     *
     * @return 农户土地信息
     */
    ManagementDO getManagement(String farmerCode);

    /**
     * 获得农户土地信息列表
     *
     * @param ids 编号
     * @return 农户土地信息列表
     */
    List<ManagementDO> getManagementList(Collection<Long> ids);

    /**
     * 获得农户土地信息分页
     *
     * @param pageReqVO 分页查询
     * @return 农户土地信息分页
     */
    PageResult<ManagementDO> getManagementPage(ManagementPageReqVO pageReqVO);

    /**
     * 获得农户土地信息列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 农户土地信息列表
     */
    List<ManagementDO> getManagementList(ManagementExportReqVO exportReqVO);

    /**
     * 通过用户手机号获得农户土地信息
     *
     * @return 农户土地信息
     */
    ManagementRespVO getMobileManagement(String mobile);

}
